package LeetCode.interview;

import util.LogUtils;

/*
 * 
原题

　　Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. 
　　If the last word does not exist, return 0. 
　　Note: A word is defined as a character sequence consists of non-space characters only. 
　　For example, 
　　Given s = "Hello World", 
　　return 5. 

题目大意

　　给定一个由大小写字母组和空格组成的字符串，返回字符串中的最后一个单词长度。 

解题思路

　　先从后找第一个字母的位置x，如果没有找到就返回0，如果找到，再找第一个空格的位记为y(y可能是-1，因为没有找到空格)，返回结果x-y。 
	
 * @Date 2017-09-13 10：20
 */
public class _058_Length_of_Last_Word {
	 public int lengthOfLastWord(String s) {
		int index = s.length()-1;
		 
		int x = index;		//从右开始向左遍历，找到第一个字母(即:第一个不是空字符的位置)
		int y = index;		//从右开始向左遍历，找到第一个空格(即:第一个不是字母的位置, 可能结果会是-1，没有空格)
		//查找
		while (x>=0 && s.charAt(x)==' ')
			x--;
		 
		if (x < 0)	return 0;		//数组已经全部遍历完成，未找到字母(单词)
		

		while ((y>=0 && s.charAt(y)!=' ') || y>x)	//y>x：可能存在一直情况,最后一个单词后面还有很多个空格
			y--;
		
		return x-y;
	 }
	public static void main(String[] args) {
		LogUtils.println("结果", new _058_Length_of_Last_Word().lengthOfLastWord(" zou chao "));
	}
}
